<?php

class SiteController extends FrontEndController
{
	public $layout='column2';
	public function accessRules()
	{
		return array(
			array('allow',  // allow all users to perform 'index' and 'view' actions
				'actions'=>array('eSaveEdit'),
				'roles'=>array('admin'),
			),
		);
	}
	/**
	 * Declares class-based actions.
	 */
	public function actions()
	{
		return array(
			// captcha action renders the CAPTCHA image displayed on the contact page
			'captcha'=>array(
					'class'=>'CCaptchaAction',
					'backColor'=>0xFFFFFF,
			),
			// page action renders "static" pages stored under 'protected/views/site/pages'
			// They can be accessed via: index.php?r=site/page&view=FileName
			'page'=>array(
					'class'=>'CViewAction',
			),
		);
		
	}
	public function actionESaveEdit()
	{
		if (Yii::app()->user->role=='admin' && Yii::app()->request->isAjaxRequest){
			$val = Yii::app()->request->getParam('val');
			$ename = Yii::app()->request->getParam('ename');
			$etype = Yii::app()->request->getParam('etype');
			$etable = Yii::app()->request->getParam('etable');
			$eid = Yii::app()->request->getParam('eid');
			if($val && $ename && $etype && $etable && $eid){
				if(Yii::app()->language!=Yii::app()->params->language){
					$class = $etable.'Ln'; 
					$field = $etable.'_id';
					$model = $class::model()->findByAttributes(array($field=>$eid, 'ln'=>Yii::app()->language));
					if(!$model){
						$model = new $class;
					}
					$model->$ename = $val;
					$model->$field = $eid;
					$model->ln = Yii::app()->language;
					$model->save();
				} else {
					$class = $etable;
					$model = $class::model()->findByPK($eid);
					$model->$ename = $val;
					$model->save();
				}
				return true;
			}
		} else {
			$this->redirect(Yii::app()->homeUrl);
		}
	}
	public function actionIndex()
	{
		$this->layout='column3';
		if (isset($model))
			$this->render('index',array('model'=>$model));
		else 
			$this->render('index');
	}
	/**
	 * This is the action to handle external exceptions.
	 */
	public function actionError()
	{
	    if($error=Yii::app()->errorHandler->error)
	    {
	    	if(Yii::app()->request->isAjaxRequest)
	    		echo $error['message'];
	    	else
	        	$this->render('error', $error);
	    }
	}

	/**
	 * Displays the contact page
	 */
	public function actionContact()
	{
		$model=new ContactForm;
		if(isset($_POST['ContactForm']))
		{
			$model->attributes=$_POST['ContactForm'];
			if($model->validate())
			{
				$headers="From: {$model->email}\r\nReply-To: {$model->email}";
				mail(Yii::app()->params['adminEmail'],$model->subject,$model->body,$headers);
				Yii::app()->user->setFlash('contact','Спасибо. Наши специалисты скоро с Вами свяжутся.');
				$this->refresh();
			}
		}
		$content = Content::model()->findByPK("39");
		$param = array('model'=>$model);
		$param['data'] = $content? $content : '';
		$this->render('contact', $param);
	}

	/**
	 * Displays the login page
	 */
	public function actionSearch()
	{
		$search = Yii::app()->request->getParam('search');
		if(Yii::app()->language == Yii::app()->params->language) {
			$sql = "SELECT c.id, c.type_id, c.alias, c.name AS title, 'content' AS t, 'Новости' AS r, cat.name, cat.alias AS cat_alias  FROM {{content}} AS c
					LEFT JOIN {{category_content}} AS cat ON cat.id=c.category_id WHERE c.text LIKE '%".$search."%' OR  c.name LIKE '%".$search."%'";
		} else {
			$sql = "SELECT c.id, content.type_id, content.alias, c.name AS title, 'content' AS t, 'Новости' AS r, catln.name, cat.alias AS cat_alias  FROM {{content_ln}} AS c
					LEFT JOIN {{content}} AS content ON content.id=c.content_id 
					LEFT JOIN {{category_content}} AS cat ON cat.id=content.category_id
					LEFT JOIN {{category_content_ln}} AS catln ON catln.category_content_id=content.category_id WHERE c.text LIKE '%".$search."%' OR  c.name LIKE '%".$search."%'";
		}
		$connection=Yii::app()->db;
		$result=$connection->createCommand($sql)->queryAll();
		// display the login form
		$this->render('search',array('model'=>$result));
		
	}
	public function actionForgot()
	{
		if (Yii::app()->user->isGuest){
			$model=new ForgotForm;
			if(isset($_POST['ForgotForm']))
			{
				$model->attributes=$_POST['ForgotForm'];
				if($model->validate())
				{
					$post = Yii::app()->request->getParam('ForgotForm');
					$user = Users::model()->find("email = :email", array(":email" => $post['email']));
					if($user){
						$from = Yii::app()->params['adminEmail'];
						$to = $user->email;
						$headers="From: {$from}\r\nReply-To: {$from}";
						$name = $user->full_name!=NULL ? $user->full_name : 'Пользователь';
						$message = 'Уважаемый '.$name.','."\r\n";
						$message .= 'Для установки нового пароля используйте ссылку:'."\r\n";
						$url = Yii::app()->createAbsoluteUrl('site/forgot', array('hash'=>md5($user->password.$user->id), 'uid'=>$user->id));
						$message .= $url."\r\n";
						$message .= '---'."\r\n";
						$message .= 'Это письмо было сгенерировано автоматически. Пожалуйста не отвечайте на его содержимое'."\r\n";
						$message .= 'С уважениям, Подам В Суд.'."\r\n";
						mail($to,'Востановления пароля',$message,$headers);
						Yii::app()->user->setFlash('forgot','На вашу почту отправлен Ваш новый пароль.');
						$this->refresh();
					} else {
						Yii::app()->user->setFlash('forgot_messange','Вы ввели не правильный e-mail. Попробуйте пожалуйста еще раз.');
					}
				}
			}
			$hash = Yii::app()->request->getParam('hash');
			$uid = Yii::app()->request->getParam('uid');
			if($hash !=NULL && $uid !=NULL){
				$model = Users::model ()->findByPk ( $uid );
				if ($hash == md5($model->password.$model->id)) {
					$new_pass = $pass = substr(md5(microtime()),rand(0,26),6);
					$saltedpass = User::model ()->ganaratePassword ( $new_pass );
					$model->password = $saltedpass;
					if($model->save ()) {
						Yii::app()->user->setFlash('forgot','Ваш новый пароль: '.$new_pass.'</b><br/>Если вы желаете его сменить, авторизируйтесь, после чего войдите в личный кабинет.');
						$from = Yii::app()->params['adminEmail'];
						$to = $model->email;
						$headers="From: {$from}\r\nReply-To: {$from}";
						$name = $model->full_name!=NULL ? $model->full_name : 'Пользователь';
						$message = 'Уважаемый '.$name.','."\r\n";
						$message .= 'Ваш новый пароль: '.$new_pass."\r\n";
						$message .= '---'."\r\n";
						$message .= 'Это письмо было сгенерировано автоматически. Пожалуйста не отвечайте на его содержимое'."\r\n";
						$message .= 'С уважениям, Подам В Суд.'."\r\n";
						mail($to,'Новый пароль',$message,$headers);
					}
				} else {
					Yii::app()->user->setFlash('forgot_error','Вы ввели не правильную ссылку. Попробуйте пожалуйста еще раз.');
				}
			}
			$this->render('forgot',array('model'=>$model));
		} else {
			$this->redirect(Yii::app()->homeUrl);
		}
	}
	/**
	 * Displays the login page
	 */
	public function actionRegistration()
	{
		if (Yii::app()->user->isGuest){
			$model=new RegistrationForm;
			if(isset($_POST['RegistrationForm']))
			{
				$model->attributes=$_POST['RegistrationForm'];
				if($model->validate()) {
					$post = Yii::app()->request->getParam('RegistrationForm');
					$user=new Users;
					$user->email = $post['email'];
					$user->full_name = $post['fio'];
					$user->disabled = 1;
					$user->password = Users::model()->ganaratePassword($post['password']);
					$user->save(false);
					
					$from = Yii::app()->params['adminEmail'];
					$to = $user->email;
					$headers="From: {$from}\r\nReply-To: {$from}";
					$name = $user->full_name!=NULL ? $user->full_name : 'Пользователь';
					$message = 'Уважаемый '.$name.','."\r\n";
					$message .= 'Для продолженя регистрации используйте следующую ссылку:'."\r\n";
					$url = Yii::app()->createAbsoluteUrl('site/registration', array('hash'=>md5($user->password.$user->id), 'uid'=>$user->id));
					$message .= $url."\r\n";
					$message .= '---'."\r\n";
					$message .= 'Это письмо было сгенерировано автоматически. Пожалуйста не отвечайте на его содержимое'."\r\n";
					$message .= 'С уважениям, Подам В Суд.'."\r\n";
					mail($to,'Регистрация',$message,$headers);
					Yii::app()->user->setFlash('registration','На вашу почту отправлено письмо со следующими инструкциями.');
					$this->refresh();
				}
			}
			$hash = Yii::app()->request->getParam('hash');
			$uid = Yii::app()->request->getParam('uid');
			if($hash !=NULL && $uid !=NULL){
				$model = Users::model ()->findByPk ( $uid );
				if ($hash == md5($model->password.$model->id)) {
					$model->disabled = 0;
					$model->save();
					$this->redirect(Yii::app()->homeUrl);
				} else {
					Yii::app()->user->setFlash('registration_error','Вы ввели не правильную ссылку. Попробуйте пожалуйста еще раз.');
				}
			}
			$this->render('registration',array('model'=>$model));
		} else {
			$this->redirect(Yii::app()->homeUrl);
		}
	}
	/**
	 * Displays the login page
	 */
	public function actionLogin()
	{	
		if (Yii::app()->user->isGuest){
			$model=new LoginForm;
	
			// if it is ajax validation request
			if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
			{
				echo CActiveForm::validate($model);
				Yii::app()->end();
			}
	
			// collect user input data
			if(isset($_POST['LoginForm']))
			{
				$model->attributes=$_POST['LoginForm'];
				// validate user input and redirect to the previous page if valid
				if($model->validate() && $model->login())
					$this->redirect(Yii::app()->user->returnUrl);
			}
			// display the login form
			$this->render('login',array('model'=>$model));
		} else {
			//require_once $_SERVER['DOCUMENT_ROOT'].'/protected/controllers/frontend/ProfileController.php';
			//ProfileController::actionIndex(Yii::app()->user->id);
			// создаём контроллер, основываясь на нашем роуте
			//$p = Yii::app()->createController('profile/controller/index');
			//$r = $p[0]->actionIndex(Yii::app()->user->id);
			//$this->render('profile/index',array('model'=>$model));
			$this->redirect(Yii::app()->homeUrl);
		}
	}
	
	/**
	 * Logs out the current user and redirect to homepage.
	 */
	public function actionLogout()
	{
		Yii::app()->user->logout();
		$this->redirect(Yii::app()->homeUrl);
	}
}